/*********************************
*-- 33 KDH Knieja ---------------*
*-- im. Harcerzy Września 1939 --*
*-- autor: Marcin Rzepisko ------*
*-- data: 2013-11-11 ------------*
**********************************/

package net.kdh.knieja.web;

import java.io.IOException;
import java.io.PrintWriter;
import net.kdh.knieja.kontroler.interfejsy.AutoryzacjaUsluga;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.kdh.knieja.kontroler.narzedzia.Narzedzia;
import net.kdh.knieja.model.system.token.Token;
import net.kdh.knieja.model.wspolne.DataCzas;
import net.kdh.knieja.model.wspolne.wyjatki.BladAutoryzacjiWyjatek;
import net.kdh.knieja.model.wspolne.wyjatki.BladWalidacjiWyjatek;


/**
 *
 * @author rz.marcin@gmail.com
 */
public class LogowanieServlet extends HttpServlet {
    AutoryzacjaUsluga autoryzacjaUsluga = FabrykaUslug.getAutoryzacjaUsluga();

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter out = resp.getWriter();
        Cookie ciasteczko;
        String idUzytkownika;
        String tokenString;
        //@TODO
        String login = Narzedzia.generujMD5(req.getParameter("login"));
        String haslo = Narzedzia.generujMD5(req.getParameter("haslo"));
        Token token;
        try {
        token = autoryzacjaUsluga.zaloguj(login, haslo);
        }
        catch (BladAutoryzacjiWyjatek ex) {
            resp.sendError(1001, "Niepoprawne hasło");
            out.print("Niepoprawne hasło");
            return;
        }
        catch (BladWalidacjiWyjatek ex) {
            resp.sendError(1002, "Niepoprawny login");
            out.print("Niepoprawny login");
            return;
        }
        idUzytkownika = token.getIdUzytkownika();
        tokenString = token.getToken();
        
        if("true".equals((String)req.getAttribute("zapamietaj"))) {
        ciasteczko = new Cookie(idUzytkownika, tokenString);
        ciasteczko.setMaxAge(DataCzas.roznicaSekund(token.getDataUtworzenia(), token.getDataWygasniecia()));
        resp.addCookie(ciasteczko);
        }
        else {
            req.getSession().setAttribute("idUzytkownika", tokenString);
            req.getSession().setAttribute("token", tokenString);
        }
        out.print("Autoryzacja przebiegła pomyślnie!");
        out.print(token);
    }
}
